Tapestry এর Localization এবং Internationalization

Web Development - অ্যাপাচি ট্যাপেস্ট্রি (Apache Tapestry) -

Localization (L10n) এবং Internationalization (I18n) ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টের গুরুত্বপূর্ণ অংশ, বিশেষ করে যদি আপনি বৈশ্বিক বাজারে অ্যাপ্লিকেশনটি চালানোর পরিকল্পনা করেন। Apache Tapestry এ Localization এবং Internationalization সহজে পরিচালনা করার জন্য শক্তিশালী সমর্থন প্রদান করে।

Internationalization (I18n)

Internationalization (I18n) হলো সেই প্রক্রিয়া যা অ্যাপ্লিকেশনকে বিভিন্ন ভাষা এবং সংস্কৃতির জন্য প্রস্তুত করে। এটি অ্যাপ্লিকেশনের ভাষা, তারিখ, মুদ্রা, এবং অন্যান্য অঞ্চলভিত্তিক কনফিগারেশন পরিবর্তন করার সুবিধা দেয়।

Tapestry তে Internationalization এর জন্য Message Catalog এবং Locale সমর্থন রয়েছে।

Localization (L10n)

Localization (L10n) হলো প্রক্রিয়া যেখানে Internationalization এর ওপর ভিত্তি করে অ্যাপ্লিকেশনটি নির্দিষ্ট অঞ্চলের জন্য কাস্টমাইজ করা হয়। এটি ভাষার অনুবাদ, সংস্কৃতির বৈশিষ্ট্য এবং অন্যান্য স্থানীয় উপাদান সমন্বিত করে অ্যাপ্লিকেশনটি নির্দিষ্ট অঞ্চলের জন্য প্রস্তুত করে।


Tapestry তে Localization এবং Internationalization পরিচালনা

১. Tapestry Locale Management

Tapestry একটি ব্যবহারকারী নির্ধারিত locale বা ভাষার সেটিং গ্রহণ করতে সক্ষম। এটি Locale এর মাধ্যমে অ্যাপ্লিকেশনকে ভাষার উপর ভিত্তি করে কনফিগারেশন পরিচালনা করে। Tapestry স্বয়ংক্রিয়ভাবে কাস্টম locale এবং messages পরিচালনা করার জন্য সমর্থন প্রদান করে।

  1. Locale সেট করা: Tapestry অ্যাপ্লিকেশনের ল্যাঙ্গুয়েজ বা লোকেল পরিবর্তন করতে Locale নির্বাচন করা হয়। আপনি ব্যবহারকারীর ব্রাউজারের লোকেল স্বয়ংক্রিয়ভাবে গ্রহণ করতে পারেন অথবা ম্যানুয়ালি সেট করতে পারেন।

    Locale Configurations:

    • User Locale নির্বাচন করতে: Tapestry ফ্রেমওয়ার্কে @Inject অ্যানোটেশন ব্যবহার করে আপনি ব্যবহারকারীর locale ইনজেক্ট করতে পারেন।

      @Inject
      private Locale locale;
      
    • Locale নির্বাচন করার উদাহরণ:

      @Inject
      private Locale locale;
      
      public void onActivate() {
          if (locale.getLanguage().equals("en")) {
              // Set English locale
          } else if (locale.getLanguage().equals("fr")) {
              // Set French locale
          }
      }
      
  2. Locale নির্ধারণে @Inject ব্যবহার: Tapestry আপনাকে Locale নির্ধারণ করতে এবং সে অনুযায়ী UI কনফিগারেশন পরিচালনা করতে সাহায্য করে।

২. Tapestry Message Catalog

Tapestry messages.properties ফাইল ব্যবহার করে বিভিন্ন ভাষার জন্য অনুবাদ (translations) সংরক্ষণ করে। একাধিক ভাষা সমর্থন করতে, আপনাকে শুধু একাধিক properties ফাইল তৈরি করতে হবে এবং সেগুলির মধ্যে উপযুক্ত ভাষার অনুবাদ রাখতে হবে।

Message Catalog Configuration:

  1. messages.properties: এই ফাইলটি ডিফল্ট ভাষার জন্য প্রয়োজনীয় অনুবাদ সংরক্ষণ করবে।

    greeting=Hello, Welcome to Tapestry!
    
  2. messages_fr.properties: যদি আপনি ফরাসি ভাষা সমর্থন করতে চান, তাহলে messages_fr.properties ফাইলটি তৈরি করুন এবং এখানে ফরাসি অনুবাদ দিন:

    greeting=Bonjour, Bienvenue sur Tapestry!
    
  3. অন্য ভাষার জন্য অনুবাদ: একাধিক ভাষা সমর্থন করতে messages_{locale}.properties ফাইল ব্যবহার করা হয় (যেমন messages_fr.properties, messages_de.properties, ইত্যাদি)।

৩. Messages in Tapestry Templates

Tapestry টেমপ্লেটে messages ব্যবহার করা সহজ। আপনি t:message ট্যাগ ব্যবহার করে অনুবাদ করা পাঠ্য প্রদর্শন করতে পারেন।

উদাহরণ:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Localization Example</title>
    </head>
    <body>
        <h1><t:message key="greeting" /></h1>
    </body>
</html>

এখানে:

  • <t:message key="greeting" /> ট্যাগটি আপনার messages.properties ফাইল থেকে "greeting" চাবির মানটিকে নির্বাচন করবে এবং সেই অনুযায়ী ভাষার ভিত্তিতে প্রদর্শন করবে।

৪. Tapestry Date and Time Formatting

Tapestry অ্যাপ্লিকেশনের মধ্যে Date, Time এবং Currency ফরম্যাট করার জন্য আপনি locale-specific formatting ব্যবহার করতে পারেন। Tapestry আপনাকে স্বয়ংক্রিয়ভাবে বর্তমান ভাষার ভিত্তিতে ফরম্যাটিং প্রদান করে।

Date Formatting উদাহরণ:

@Property
private Date currentDate;

HTML টেমপ্লেট:

<t:date value="currentDate" pattern="dd/MM/yyyy" />

এই উদাহরণে, currentDate ফিল্ডটির মান dd/MM/yyyy ফরম্যাটে দেখাবে।


৫. Tapestry Custom Locale Handling

আপনি যদি ব্যবহারকারীর locale পরিবর্তন করতে চান (যেমন, ইউজার যখন ভাষা পরিবর্তন করবে), আপনি Locale Switcher ফিচার তৈরি করতে পারেন।

  1. LocaleSwitcher.java:
package com.example.services;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.ioc.annotations.Inject;

public class LocaleSwitcher {
    
    @Inject
    private Request request;

    @Inject
    private Response response;

    @Property
    private String selectedLocale;

    public void onActivate(String newLocale) {
        if ("fr".equals(newLocale)) {
            // Set to French Locale
            selectedLocale = "fr";
        } else {
            // Set to English Locale
            selectedLocale = "en";
        }

        // Redirect back to the same page
        response.sendRedirect(request.getPath());
    }
}
  1. HTML Template for Locale Switcher:
<t:link t:id="switchToEnglish" page="LocaleSwitcher" context="en">Switch to English</t:link>
<t:link t:id="switchToFrench" page="LocaleSwitcher" context="fr">Switch to French</t:link>

এটি Locale Switcher তৈরি করবে, যেখানে ব্যবহারকারী English বা French ভাষায় পরিবর্তন করতে পারবেন।


সারাংশ

Tapestry এ Internationalization (I18n) এবং Localization (L10n) সমর্থন করার জন্য শক্তিশালী ফিচার রয়েছে। আপনি messages.properties ফাইল ব্যবহার করে বিভিন্ন ভাষার জন্য অনুবাদ সংরক্ষণ করতে পারেন, এবং Locale ম্যানেজমেন্ট ব্যবহার করে অ্যাপ্লিকেশনের ভাষা পরিবর্তন করতে পারেন। Tapestry টেমপ্লেটের মধ্যে t:message ট্যাগ ব্যবহার করে ভাষা-ভিত্তিক কন্টেন্ট প্রদর্শন করা সহজ। এছাড়া, আপনি কাস্টম Locale Switcher তৈরি করে ব্যবহারকারীর ভাষা পরিবর্তন করার সুযোগ প্রদান করতে পারেন।

Tapestry তে I18n এবং L10n ব্যবহারের মাধ্যমে আপনার অ্যাপ্লিকেশনটি আন্তর্জাতিকভাবে ব্যবহারকারীদের জন্য সহজে উপলব্ধ এবং কাস্টমাইজড হতে পারে।

Content added By

Localization এবং Internationalization এর পরিচিতি

Localization (লোকালাইজেশন) এবং Internationalization (আন্তর্জাতিকীকরণ) ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে গুরুত্বপূর্ণ দিক, বিশেষত যখন আপনি অ্যাপ্লিকেশনটি বিশ্বব্যাপী ব্যবহারকারীদের জন্য তৈরি করতে চান। Apache Tapestry এই দুটি প্রক্রিয়াকে সহজতর করতে সাহায্য করে।

  • Internationalization (i18n): এটি এমন একটি প্রক্রিয়া, যার মাধ্যমে অ্যাপ্লিকেশনটি এমনভাবে তৈরি করা হয় যাতে ভবিষ্যতে অন্য ভাষা বা অঞ্চলের জন্য localization করা যায়। অর্থাৎ, এটি অ্যাপ্লিকেশনটি বিভিন্ন ভাষা ও সংস্কৃতিতে ব্যবহারের উপযোগী করে তোলে।
  • Localization (l10n): এটি আন্তর্জাতিকীকরণের পরবর্তী ধাপ, যেখানে একটি অ্যাপ্লিকেশনকে নির্দিষ্ট ভাষা, সংস্কৃতি বা দেশের প্রয়োজন অনুযায়ী কাস্টমাইজ করা হয়। উদাহরণস্বরূপ, ইংরেজি থেকে বাংলা বা স্প্যানিশ ভাষায় পরিবর্তন করা।

Apache Tapestry আন্তর্জাতিকীকরণ এবং লোকালাইজেশনের জন্য একটি শক্তিশালী সমাধান প্রদান করে, যা সহজে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষা ও সংস্কৃতির জন্য উপযোগী করে তোলে।


Tapestry-তে Localization এবং Internationalization এর ব্যবহার

১. Tapestry তে Internationalization (i18n) সেটআপ

Tapestry তে Internationalization (i18n) চালু করতে, আপনাকে প্রথমে অ্যাপ্লিকেশনের জন্য message resources তৈরি করতে হবে। এটি অ্যাপ্লিকেশনটির বিভিন্ন ভাষা এবং সংস্কৃতি সমর্থন করার জন্য প্রয়োজনীয় স্ট্রিং বা বার্তাগুলি সংরক্ষণ করে।

  • message.properties: এটি ডিফল্ট ভাষার জন্য বার্তা সংরক্ষণ করে (যেমন, ইংরেজি)।
  • message_fr.properties: এটি ফরাসি ভাষার জন্য বার্তা সংরক্ষণ করে।
  • message_es.properties: এটি স্প্যানিশ ভাষার জন্য বার্তা সংরক্ষণ করে।

Tapestry তে, আপনাকে এই properties ফাইলগুলো তৈরি করতে হবে এবং সেগুলোকে আপনার অ্যাপ্লিকেশন দ্বারা লোড করতে হবে।

১.1. message.properties (ডিফল্ট ভাষা)

welcomeMessage=Welcome to the Tapestry Application!
loginPrompt=Please log in to continue.

১.2. message_fr.properties (ফরাসি ভাষা)

welcomeMessage=Bienvenue dans l'application Tapestry!
loginPrompt=Veuillez vous connecter pour continuer.

১.3. message_es.properties (স্প্যানিশ ভাষা)

welcomeMessage=¡Bienvenido a la aplicación Tapestry!
loginPrompt=Por favor inicie sesión para continuar.

এখন, আপনার অ্যাপ্লিকেশনটি একাধিক ভাষা সমর্থন করবে। Tapestry আপনার ব্যবহারকারীর locale অনুযায়ী সঠিক message.properties ফাইলটি নির্বাচন করবে এবং সেই ভাষার বার্তাগুলি প্রদর্শন করবে।

২. Locale নির্বাচন এবং ব্যবহারের পদ্ধতি

Tapestry তে Locale নির্বাচনের জন্য আপনি LocaleSwitcher বা অন্য কোন মেকানিজম ব্যবহার করতে পারেন, যা ব্যবহারকারীর পছন্দ অনুযায়ী ভাষা পরিবর্তন করবে। Tapestry তে, Locale ক্লাস ব্যবহৃত হয়, যা ডিফল্ট বা কাস্টম ভাষা নির্বাচন করতে সাহায্য করে।

উদাহরণ: Locale পরিবর্তন করা
  1. Java ক্লাসে Locale সেট করা:
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.Request;

public class LocaleSwitcher {

    @Property
    private String language;

    private final Request request;

    public LocaleSwitcher(Request request) {
        this.request = request;
    }

    // Method to switch locale based on user selection
    public void onChangeLanguage() {
        if ("fr".equals(language)) {
            request.getSession().setAttribute("locale", "fr");
        } else if ("es".equals(language)) {
            request.getSession().setAttribute("locale", "es");
        } else {
            request.getSession().setAttribute("locale", "en"); // default to English
        }
    }
}
  1. Locale পরিবর্তনের জন্য পেজ টেমপ্লেট:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Locale Switcher</title>
    </head>
    <body>
        <h1><t:message key="welcomeMessage"/></h1>
        <p><t:message key="loginPrompt"/></p>

        <form>
            <label>Select Language:</label>
            <t:select t:id="languageSelect" value="language">
                <t:option value="en">English</t:option>
                <t:option value="fr">French</t:option>
                <t:option value="es">Spanish</t:option>
            </t:select>

            <t:button t:id="submitButton" value="Change Language"/>
        </form>
    </body>
</html>

এখানে, ব্যবহারকারী একটি ভাষা নির্বাচন করলে, সেটি LocaleSwitcher ক্লাসের মাধ্যমে সেট হয়ে যাবে এবং পেজে সেই ভাষার বার্তাগুলি দেখানো হবে।


৩. Tapestry তে Localization (l10n) সেটআপ

Localization (l10n) এর মাধ্যমে আপনি শুধু ভাষা পরিবর্তনই নয়, বরং অঞ্চলের নির্দিষ্ট বিন্যাস, যেমন তারিখ, সময়, এবং মুদ্রা সম্পর্কিত কনফিগারেশন করতে পারেন। Tapestry স্থানীয়করণের জন্য Locale ব্যবহার করে, যা message.properties ফাইলগুলো এবং সিস্টেমের অন্য কনফিগারেশনগুলির মাধ্যমে কাস্টমাইজড আউটপুট প্রদান করে।

উদাহরণ: তারিখ এবং সময়ের স্থানীয়করণ

Tapestry তে, আপনি t:format কম্পোনেন্ট ব্যবহার করে তারিখ এবং সময় স্থানীয়ভাবে ফরম্যাট করতে পারেন।

<t:format value="currentDate" pattern="dd/MM/yyyy"/>

এটি currentDate এর মান dd/MM/yyyy ফরম্যাটে প্রদর্শন করবে।


৪. Tapestry তে I18N-এর জন্য Best Practices

  • Message Resources: ডিফল্ট ভাষা এবং অন্যান্য ভাষার জন্য message.properties ফাইলগুলি তৈরি করুন।
  • Locale Handling: ব্যবহারকারীর ভাষা এবং অঞ্চল অনুযায়ী Locale সঠিকভাবে নির্বাচন করুন।
  • Date and Time Formatting: তারিখ এবং সময়ের জন্য স্থানীয় ফরম্যাট ব্যবহার করুন।
  • Currency and Number Formatting: মুদ্রা এবং সংখ্যা ফরম্যাটিং ক্ষেত্রেও Locale অনুসারে কাস্টমাইজেশন করুন।
  • Locale Switching: ব্যবহারকারীদের পছন্দ অনুযায়ী ভাষা পরিবর্তনের সুবিধা দিন এবং সেই অনুযায়ী বার্তা এবং ডেটা প্রদর্শন করুন।

সারাংশ

Internationalization (i18n) এবং Localization (l10n) একটি অ্যাপ্লিকেশনকে আন্তর্জাতিক বাজারে প্রবেশযোগ্য করার জন্য গুরুত্বপূর্ণ। Apache Tapestry আপনার অ্যাপ্লিকেশনকে একাধিক ভাষা এবং সংস্কৃতি সমর্থন করতে সহায়তা করে। Tapestry তে Locale ব্যবহারের মাধ্যমে আপনি ভাষা পরিবর্তন এবং message resources ব্যবহার করে বিভিন্ন ভাষায় বার্তা প্রদর্শন করতে পারেন। Date/Time formatting, Currency formatting, এবং Number formatting এর মতো বৈশিষ্ট্যগুলিও Locale-এর মাধ্যমে কাস্টমাইজ করা যায়, যা আপনার অ্যাপ্লিকেশনকে আরও আন্তর্জাতিক ব্যবহারকারী-বান্ধব করে তোলে।

Content added By

Multi-language Support করা

Apache Tapestry একটি শক্তিশালী web application framework, যা localization (ভাষা স্থানীয়করণ) এবং internationalization (আন্তর্জাতিকীকরণ) সমর্থন করে, যাতে আপনি বিভিন্ন ভাষায় অ্যাপ্লিকেশনটি ব্যবহারযোগ্য করতে পারেন। এই ফিচারটি অ্যাপ্লিকেশনকে বিশ্বের বিভিন্ন অঞ্চলের জন্য উপযোগী করতে সহায়ক, যেখানে একাধিক ভাষা এবং সংস্কৃতি সমর্থিত থাকে।

Tapestry-তে multi-language support প্রদান করতে, আপনাকে দুটি গুরুত্বপূর্ণ দিক বিবেচনায় নিতে হবে:

  • Localization: নির্দিষ্ট ভাষা এবং সংস্কৃতির জন্য ডেটা, বার্তা, এবং ইউআই উপাদানগুলো কাস্টমাইজ করা।
  • Internationalization: অ্যাপ্লিকেশনকে একাধিক ভাষার জন্য প্রস্তুত করা, যাতে এটি বিভিন্ন অঞ্চলের ভাষা এবং সংস্কৃতির সাথে সামঞ্জস্যপূর্ণ হয়।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে multi-language support তৈরি করা যায়, যেখানে আপনি একাধিক ভাষায় অ্যাপ্লিকেশন প্রদর্শন করতে পারবেন।


ধাপ ১: Tapestry Localization সাপোর্ট কনফিগারেশন

Tapestry তে localization এবং internationalization সমর্থন করার জন্য, প্রথমে আপনাকে resource files তৈরি করতে হবে, যেখানে আপনি বিভিন্ন ভাষার জন্য বার্তা এবং টেক্সট কনফিগার করবেন।

১.1. Resource Bundle তৈরি

Tapestry তে, .properties ফাইল ব্যবহার করে আপনি ভাষার নির্দিষ্ট বার্তা এবং কনটেন্ট কনফিগার করতে পারেন। সাধারণত, messages.properties নামের একটি ফাইল রাখা হয়, যা ডিফল্ট ভাষার বার্তা সংরক্ষণ করে, এবং অন্যান্য ভাষার জন্য আলাদা properties ফাইল রাখা হয়।

  • messages.properties (ডিফল্ট ভাষা, যেমন ইংরেজি):
welcome.message=Welcome to the Tapestry Application
login.button=Login
  • messages_fr.properties (ফরাসি ভাষা):
welcome.message=Bienvenue dans l'application Tapestry
login.button=Connexion

এখানে:

  • messages.properties হল ডিফল্ট (ইংরেজি) বার্তা।
  • messages_fr.properties ফাইলটি ফরাসি ভাষার জন্য কনফিগার করা।

১.2. Tapestry তে Localization সঠিকভাবে লোড করা

Tapestry আপনাকে Resource Bundle ব্যবহার করার সুবিধা দেয়, যা ফাইলগুলো থেকে ভাষা নির্ধারণ করে বার্তা লোড করে।

Tapestry-তে ভাষা সেট করার জন্য আপনি locale সেট করতে পারেন এবং সেই অনুযায়ী প্রয়োজনীয় resource bundles ব্যবহার করতে পারেন।

web.xml ফাইলের মধ্যে locale এবং bundle কনফিগার করা যেতে পারে:

<filter>
    <filter-name>Locale Filter</filter-name>
    <filter-class>org.apache.tapestry5.services.locale.DefaultLocale</filter-class>
    <init-param>
        <param-name>defaultLocale</param-name>
        <param-value>en_US</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>Locale Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

এটি en_US (ইংরেজি, মার্কিন যুক্তরাষ্ট্র) ডিফল্ট লোকেল হিসেবে সেট করবে। আপনি যখন অন্য ভাষা ব্যবহার করতে চান, তখন locale পরিবর্তন করতে পারেন, যেমন fr_FR (ফরাসি, ফ্রান্স)।


ধাপ ২: Multi-language Support তৈরি করা

Tapestry তে একাধিক ভাষা সমর্থন করার জন্য, আপনার resource bundles এবং UI কম্পোনেন্টগুলোকে এমনভাবে কনফিগার করতে হবে যাতে এটি স্বয়ংক্রিয়ভাবে ভাষা পরিবর্তন করতে পারে। এটি করতে, আপনি সাধারণত ব্যবহারকারীর ভাষা নির্বাচন করার জন্য একটি language switcher ব্যবহার করবেন।

২.1. Language Switcher তৈরি করা

একটি সিম্পল language switcher তৈরি করুন যা ব্যবহারকারীদের তাদের পছন্দমতো ভাষা নির্বাচন করতে দেয়।

language-switcher.tml:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Language Switcher</title>
    </head>
    <body>
        <h2><t:message key="welcome.message"/></h2>

        <t:select t:id="languageSelect" value="locale" zone="contentZone">
            <t:option value="en_US">English</t:option>
            <t:option value="fr_FR">Français</t:option>
        </t:select>

        <h3><t:message key="login.button"/></h3>
    </body>
</html>

এখানে:

  • <t:message key="welcome.message"/>: Tapestry তে messages.properties ফাইল থেকে বার্তা লোড করার জন্য ব্যবহার করা হয়।
  • <t:select>: এটি একটি ড্রপডাউন তৈরি করবে, যেখানে ব্যবহারকারী ভাষা নির্বাচন করতে পারবেন। নির্বাচিত ভাষার উপর ভিত্তি করে, Tapestry রিসোর্স ফাইল থেকে বার্তা লোড করবে।

২.2. Locale নির্বাচন এবং পেজ রিফ্রেশ

তবে, ব্যবহারকারীরা যখন ভাষা পরিবর্তন করবেন, তখন পেজ রিফ্রেশ হবে এবং নতুন ভাষার কনটেন্ট দেখানো হবে। এটি সাধারণত zone update বা AJAX এর মাধ্যমে করা যেতে পারে।

UserPage.java (Language Switcher Logic):

package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.Symbol;

public class UserPage {

    @Property
    private String locale;

    @Inject
    @Symbol("defaultLocale")
    private String defaultLocale;

    // Constructor to initialize default language
    public UserPage() {
        locale = defaultLocale; // Set default locale on page load
    }

    // Method to handle language change
    public Object onValueChangedFromLanguageSelect(String newLocale) {
        locale = newLocale; // Update locale based on user selection
        return null;  // No page refresh required, use AJAX
    }
}

এখানে:

  • onValueChangedFromLanguageSelect() মেথডটি ড্রপডাউন থেকে নির্বাচিত নতুন ভাষা গ্রহণ করে এবং সেটি locale প্রপার্টিতে আপডেট করে। AJAXের মাধ্যমে ভাষা পরিবর্তন হবে এবং নতুন ভাষার কনটেন্ট দেখাবে।

ধাপ ৩: Resource Bundle থেকে বার্তা রেন্ডার করা

Tapestry-এর message কম্পোনেন্টের মাধ্যমে আপনি রিসোর্স ফাইল থেকে বার্তা রেন্ডার করতে পারেন, যা ভাষা অনুযায়ী স্বয়ংক্রিয়ভাবে পরিবর্তিত হয়।

message.tml:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Localized Content</title>
    </head>
    <body>
        <h2><t:message key="welcome.message"/></h2>
        <h3><t:message key="login.button"/></h3>
    </body>
</html>

এখানে:

  • <t:message key="welcome.message"/>: Tapestry এই কম্পোনেন্টের মাধ্যমে রিসোর্স ফাইল থেকে welcome.message বার্তা লোড করবে এবং এটি ভাষা অনুযায়ী পরিবর্তিত হবে।

সারাংশ

Apache Tapestry তে multi-language support প্রদান করা খুবই সহজ। আপনি resource bundles ব্যবহার করে ভাষার ভিত্তিতে কনটেন্ট এবং বার্তা পরিবর্তন করতে পারেন এবং language switcher ব্যবহার করে ব্যবহারকারীকে বিভিন্ন ভাষা নির্বাচন করার সুযোগ দিতে পারেন। Tapestry তে localization এবং internationalization সমর্থনের মাধ্যমে অ্যাপ্লিকেশনটি বিশ্বের বিভিন্ন ভাষার সাথে সামঞ্জস্যপূর্ণ করা যায়, যা আপনার অ্যাপ্লিকেশনকে আরো বিশ্বজনীন এবং ব্যবহারকারী-বান্ধব করে তোলে।

Content added By

Resource Bundle ব্যবহার করে ভাষা পরিবর্তন

Apache Tapestry Localization (লোকালাইজেশন) এবং Internationalization (আইন্টারন্যাশনালাইজেশন) এর মাধ্যমে আপনার অ্যাপ্লিকেশনকে একাধিক ভাষায় সমর্থন দেয়ার ব্যবস্থা সহজে করতে পারে। এটি বিশেষভাবে উপকারী যখন আপনার অ্যাপ্লিকেশনটি বিভিন্ন অঞ্চলে ব্যবহারকারীদের জন্য উপলব্ধ হবে এবং বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে হবে।

Tapestry তে Resource Bundles ব্যবহার করে ভাষা পরিবর্তন (language switching) করা যায়, যাতে ব্যবহারকারীরা তাদের পছন্দের ভাষায় অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন।

এই টিউটোরিয়ালে, আমরা দেখব কীভাবে Tapestry তে Resource Bundle ব্যবহার করে ভাষা পরিবর্তন করা যায়।


Resource Bundle কি?

Resource Bundles হল Java অ্যাপ্লিকেশনগুলির জন্য একটি স্ট্যান্ডার্ড কনফিগারেশন ফাইল যা ভাষা নির্ধারণকারী স্ট্রিং মান এবং লেবেল রাখে। এগুলি সাধারণত .properties ফাইলের মধ্যে থাকে, এবং প্রতিটি ভাষার জন্য আলাদা ফাইল ব্যবহার করা হয়।

উদাহরণ:

  • messages_en.properties — ইংরেজি ভাষার জন্য স্ট্রিং মান।
  • messages_fr.properties — ফ্রেঞ্চ ভাষার জন্য স্ট্রিং মান।

ধাপ ১: Resource Bundle তৈরি করা

প্রথমে আপনাকে একটি Resource Bundle তৈরি করতে হবে যেখানে আপনি আপনার অ্যাপ্লিকেশনের সব ভাষার স্ট্রিং সংরক্ষণ করবেন।

উদাহরণ: English এবং Bengali জন্য Resource Bundle

  1. messages_en.properties (ইংরেজি ভাষার জন্য):
greeting=Welcome
loginMessage=Please log in to continue
  1. messages_bn.properties (বাংলা ভাষার জন্য):
greeting=স্বাগতম
loginMessage=কন্টিনিউ করতে লগইন করুন

এই properties ফাইল দুটি Tapestry-এর resource bundle হিসেবে কাজ করবে এবং অ্যাপ্লিকেশন ভাষার উপর ভিত্তি করে স্ট্রিং মান প্রদান করবে।


ধাপ ২: Tapestry-তে Resource Bundle কনফিগারেশন

Tapestry এ ভাষার পরিবর্তন করতে এবং Resource Bundle ব্যবহার করতে আপনাকে @Messages অ্যানোটেশন ব্যবহার করতে হবে। এই অ্যানোটেশনটি আপনাকে কনফিগারেশন ফাইলের স্ট্রিং মানগুলি অ্যাক্সেস করতে সাহায্য করবে।

উদাহরণ: পেজ ক্লাসে Resource Bundle ব্যবহার

  1. Home.java (পেজ ক্লাস):
package com.example.pages;

import org.apache.tapestry5.annotations.Messages;
import org.apache.tapestry5.annotations.Property;

public class Home {

    @Messages
    private ResourceBundle messages;  // Inject the resource bundle

    @Property
    private String greetingMessage;

    public void setupRender() {
        greetingMessage = messages.get("greeting");  // Fetch greeting message from resource bundle
    }
}
  • @Messages: এই অ্যানোটেশনটি Tapestry কে জানায় যে এটি Resource Bundle থেকে স্ট্রিং মানগুলি ইনজেক্ট করবে।
  • messages.get("greeting"): এখানে greeting কী ব্যবহার করে ইংরেজি বা বাংলা ভাষায় স্ট্রিং মান পাওয়া যাবে।
  1. Home.tml (পেজ টেমপ্লেট):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Home</title>
    </head>
    <body>
        <h1><t:property value="greetingMessage" /></h1> <!-- Display greeting message -->
    </body>
</html>

এখানে:

  • <t:property value="greetingMessage" />: এটি পেজের মধ্যে greetingMessage প্রপার্টি প্রদর্শন করবে, যা Resource Bundle থেকে পাওয়া মান।

ধাপ ৩: ভাষা পরিবর্তন (Language Switching)

Tapestry তে ভাষা পরিবর্তন করতে Locale ব্যবহার করা হয়। আপনার পেজ বা কম্পোনেন্টে ব্যবহারকারী যখন ভাষা পরিবর্তন করবে, তখন এটি সেই ভাষার জন্য নির্ধারিত Resource Bundle ব্যবহার করবে।

উদাহরণ: ভাষা পরিবর্তনের জন্য পেজ কনফিগারেশন

  1. LanguageSwitcher.java (ভাষা পরিবর্তন কম্পোনেন্ট):
package com.example.components;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.services.ComponentClassTransformWorker;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.annotations.UsesJavaScript;

public class LanguageSwitcher {

    @Inject
    private org.apache.tapestry5.services.LocaleChanger localeChanger;

    @Property
    private String selectedLanguage;

    public void onChangeLanguage() {
        if ("en".equals(selectedLanguage)) {
            localeChanger.changeLocale("en");
        } else if ("bn".equals(selectedLanguage)) {
            localeChanger.changeLocale("bn");
        }
    }
}
  • localeChanger.changeLocale(): এই মেথডটি Tapestry তে ভাষা পরিবর্তনের জন্য ব্যবহৃত হয়।
  1. LanguageSwitcher.tml (কম্পোনেন্ট টেমপ্লেট):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Language Switcher</title>
    </head>
    <body>
        <form>
            <t:select t:id="languageSelect" value="selectedLanguage">
                <t:option value="en">English</t:option>
                <t:option value="bn">বাংলা</t:option>
            </t:select>
            <t:button t:id="switchButton" value="Switch Language" />
        </form>
    </body>
</html>
  • <t:select>: ড্রপডাউন মেনু তৈরি করে যাতে ব্যবহারকারী ইংরেজি বা বাংলা ভাষা নির্বাচন করতে পারেন।
  • <t:button>: একটি বাটন যা ভাষা পরিবর্তন করার জন্য ব্যবহার করা হবে।

ধাপ ৪: ভাষার পরিবর্তন সঞ্চালন

Tapestry এর LocaleChanger সার্ভিসের মাধ্যমে ব্যবহারকারী যখন একটি ভাষা নির্বাচন করবে, তখন তা স্বয়ংক্রিয়ভাবে সিস্টেমের Locale পরিবর্তন করবে এবং পেজে নতুন ভাষায় কনটেন্ট প্রদর্শিত হবে।


সারাংশ

Tapestry-তে Multi-language Support এবং Resource Bundle ব্যবহার করে ভাষা পরিবর্তন একটি শক্তিশালী বৈশিষ্ট্য। আপনি .properties ফাইল ব্যবহার করে একাধিক ভাষার জন্য স্ট্রিং মান সংরক্ষণ করতে পারেন এবং Tapestry এর @Messages অ্যানোটেশন এবং LocaleChanger সার্ভিস ব্যবহার করে ভাষা পরিবর্তন করতে পারেন। এটি আপনার অ্যাপ্লিকেশনকে বিভিন্ন ভাষায় সমর্থন প্রদান করে, যা আন্তর্জাতিকীকরণ (Internationalization) এবং লোকালাইজেশন (Localization) প্রক্রিয়াকে সহজ করে তোলে।

Content added By

Tapestry পেজ এবং কম্পোনেন্টে Locale Management

Locale Management একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যখন আপনি একটি মাল্টি-ল্যাংগুয়েজ বা আন্তর্জাতিক ওয়েব অ্যাপ্লিকেশন তৈরি করতে চান। Locale সাধারণত ভাষা এবং অঞ্চল বোঝায়, যেমন ইংরেজি (en) বা বাংলা (bn), যা বিভিন্ন দেশের বা অঞ্চলের ভাষা এবং সংস্কৃতির জন্য উপযুক্ত।

Apache Tapestry তে Locale Management এর মাধ্যমে আপনি অ্যাপ্লিকেশনের বিভিন্ন ভাষার মধ্যে স্যুইচ করতে পারেন এবং ইউজারের নির্বাচিত ভাষায় কনটেন্ট প্রদর্শন করতে পারেন।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Tapestry তে পেজ এবং কম্পোনেন্টে Locale ম্যানেজ করা যায়।


১. Tapestry তে Locale সেটআপ করা

Tapestry তে Locale ম্যানেজমেন্টের জন্য আপনাকে প্রথমে messages.properties ফাইলগুলি তৈরি করতে হবে এবং সেগুলোর মধ্যে ভাষার অনুবাদ এবং কনটেন্ট ম্যানেজ করতে হবে।

Locale ফাইল তৈরি

ধরা যাক, আপনি ইংরেজি এবং বাংলার জন্য অনুবাদ চাইছেন।

  1. messages.properties (default locale - English):
# messages.properties (English - default locale)
welcome.message=Welcome to our website!
login.button=Login
  1. messages_bn.properties (Bangla locale):
# messages_bn.properties (Bangla locale)
welcome.message=আমাদের ওয়েবসাইটে স্বাগতম!
login.button=লগইন

এখানে:

  • messages.properties হল ডিফল্ট ইংরেজি ভাষার ফাইল।
  • messages_bn.properties হল বাংলা ভাষার জন্য ফাইল।

২. Tapestry তে Locale ব্যবহার করা

Tapestry তে Locale পরিবর্তন করার জন্য এবং ভাষা অনুযায়ী কনটেন্ট প্রদর্শন করার জন্য @Inject অ্যানোটেশন এবং @Property ব্যবহার করা যায়। Tapestry আপনাকে @Persist অ্যানোটেশনও প্রদান করে, যার মাধ্যমে আপনি ইউজারের নির্বাচিত Locale সেট রাখতে পারবেন।

Locale সেট করা এবং ব্যবহার করা

  1. UserPreferences.java (Locale সেট এবং ব্যবহার):
package com.example.pages;

import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.Messages;

public class UserPreferences {

    @Persist
    @Property
    private String selectedLanguage = "en";  // Default language is English

    @Inject
    private Messages messages;  // Inject the Messages service for localization

    // Method to switch language
    public void changeLanguage(String languageCode) {
        selectedLanguage = languageCode;
    }

    // Displaying message based on the selected language
    public String getWelcomeMessage() {
        return messages.get("welcome.message");  // This will automatically pick the language based on locale
    }

    public String getLoginButtonText() {
        return messages.get("login.button");  // This will display Login button text in selected language
    }
}

এখানে:

  • selectedLanguage প্রপার্টি ইউজারের নির্বাচিত ভাষা রাখে (ডিফল্ট: ইংরেজি)।
  • changeLanguage() মেথডের মাধ্যমে ইউজার যে ভাষা নির্বাচন করবে, তা selectedLanguage তে সেট করা হবে।
  • messages.get() ব্যবহার করা হয়, যাতে প্রতিটি পেজে কনটেন্ট সঠিক ভাষায় প্রদর্শিত হয়।

৩. Tapestry তে Locale পরিবর্তন করা

Locale পরিবর্তন করার জন্য, আপনাকে একটি পেজে select ড্রপডাউন বা button ব্যবহার করতে হবে, যেখানে ইউজার নির্ধারণ করতে পারবে যে কোন ভাষায় অ্যাপ্লিকেশনটি প্রদর্শিত হবে।

  1. Locale স্যুইচিং UI (locale-switcher.tml):
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
    <head>
        <title>Language Selector</title>
    </head>
    <body>
        <h2>${welcomeMessage}</h2>
        <button t:id="loginButton">${loginButtonText}</button>

        <form t:id="languageForm">
            <select t:id="languageSelector" t:value="selectedLanguage">
                <option value="en">English</option>
                <option value="bn">বাংলা</option>
            </select>
            <button type="submit">Change Language</button>
        </form>
    </body>
</html>

এখানে:

  • <select> ড্রপডাউন ব্যবহার করে ইউজার ভাষা নির্বাচন করতে পারে।
  • t:value="selectedLanguage" এইভাবে selectedLanguage প্রপার্টি বাংলা বা ইংরেজি সেট করবে।

৪. Locale এ স্বয়ংক্রিয় স্যুইচিং

Tapestry আপনাকে LocaleSwitcher ফিচার সরবরাহ করে, যা ইউজারের ব্রাউজার বা সেশন থেকে ভাষা সিলেক্ট করতে সহায়ক। আপনি যদি সার্ভারের সেশন বা ইউজারের ব্রাউজারের ভাষার উপর ভিত্তি করে Locale স্যুইচ করতে চান, তবে আপনাকে এটি LocaleSwitcher মাধ্যমে করতে হবে।

LocaleSwitcher ব্যবহার

  1. LocaleSwitcherService.java (Locale স্যুইচ করতে):
package com.example.services;

import org.apache.tapestry5.services.ApplicationGlobals;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.Response;

public class LocaleSwitcherService {
    private final ApplicationGlobals applicationGlobals;
    private final Request request;
    private final Response response;

    public LocaleSwitcherService(ApplicationGlobals applicationGlobals, Request request, Response response) {
        this.applicationGlobals = applicationGlobals;
        this.request = request;
        this.response = response;
    }

    // Method to switch locale
    public void switchLocale(String language) {
        response.setLocale(new java.util.Locale(language));
        applicationGlobals.getLocale();
    }
}

এখানে, LocaleSwitcherService কাস্টম সার্ভিস দ্বারা locale পরিবর্তন করা হচ্ছে।


সারাংশ

Tapestry তে Locale Management এর মাধ্যমে আপনি বিভিন্ন ভাষায় কনটেন্ট প্রদর্শন করতে পারেন এবং ইউজারকে নির্দিষ্ট ভাষায় স্যুইচ করার সুযোগ দিতে পারেন।

  • Locale পরিবর্তনের জন্য messages.properties ফাইল ব্যবহার করতে হয়।
  • Locale পরিবর্তনের জন্য @Persist এবং Messages সার্ভিস ব্যবহার করা হয়।
  • LocaleSwitcher ফিচার দিয়ে ব্রাউজার বা সেশন ভিত্তিক ভাষা পরিবর্তন করা যায়।

এভাবে, Tapestry তে আন্তর্জাতিককরণ বা মাল্টি-ল্যাংগুয়েজ সাপোর্ট সরবরাহ করা যায়, যাতে আপনার অ্যাপ্লিকেশনটি একাধিক ভাষায় ব্যবহারযোগ্য হয়ে ওঠে।

Content added By
Promotion